﻿/////////////////////////////////////////////////////////////////
//     .--.
//    |o_o |    Proxy.cs
//    |:_/ |        Implementación de la clase Proxy
//   //   \ \   Created on:
//  (|     | )      18-abr-2009 21:25:32
// /'\_   _/`\  Original author:
// \___)=(___/      The SoftTux Team
/////////////////////////////////////////////////////////////////


using System.Security.Cryptography;
using System.Text;
using System.Web;
using UAXInversionesWeb.logicaNegocio;
using System.Data.SqlClient;
using System;

namespace UAXInversionesWeb
{
    public class Proxy
    {

        public FuncionesBolsa m_FuncionesBolsa;
        public FuncionesCliente m_FuncionesCliente;
        public FuncionesEmpleado m_FuncionesEmpleado;
        public Informes m_Informes;
        public Solicitudes m_Solicitudes;
        public AccesoBanco m_AccesoBanco;

        /// <summary>
        /// realiza el login de un cliente
        /// </summary>
        /// <param name="dni">el dni del cliente</param>
        /// <param name="password">la password del cliente</param>
        /// <returns>una cadena de texto</returns>
        public static string login(string dni, string password)
        {
            string resultado = "";

            SQLServerAccess sql = new SQLServerAccess();

            sql.initConexion();

            SqlDataReader datos = sql.ejecutarSentencia("SELECT * FROM Clientes WHERE DNI='" + dni + "' AND password='" + password + "';");
            if (datos != null)
            {
                if (datos.Read())
                {
                    // cliente
                    HttpContext.Current.Session["logueado"] = 1;
                    HttpContext.Current.Session["userName"] = datos.GetString(2) + " " + datos.GetString(3);
                    HttpContext.Current.Session["identificador"] = datos.GetInt32(0);
                    HttpContext.Current.Session["tipoUsuario"] = "cliente";
                    HttpContext.Current.Session["ultimoLogin"] = datos.GetDateTime(25);
                    setUltimoLogin(datos.GetInt32(0), 'C');
                    resultado = "cliente/PaginaPrincipalCliente.aspx";
                }
                else
                {
                    // no es cliente, comprobamos si se trata de un empleado
                    datos.Close();
                    SqlDataReader datos2 = sql.ejecutarSentencia("SELECT * FROM Empleados WHERE DNI='" + dni + "' AND password='" + password + "';");

                    if (datos2.Read())
                    {
                        if (datos2.GetString(20) == "O")
                        {
                            // operario
                            HttpContext.Current.Session["logueado"] = 1;
                            HttpContext.Current.Session["userName"] = datos2.GetString(2) + " " + datos2.GetString(3);
                            HttpContext.Current.Session["identificador"] = datos2.GetInt32(0);
                            HttpContext.Current.Session["tipoUsuario"] = "operario";
                            HttpContext.Current.Session["ultimoLogin"] = datos2.GetDateTime(22);
                            setUltimoLogin(datos2.GetInt32(0), 'E');
                            resultado = "operario/PaginaPrincipalOperario.aspx";
                        }
                        else if (datos2.GetString(20) == "S")
                        {
                            // supervisor
                            HttpContext.Current.Session["logueado"] = 1;
                            HttpContext.Current.Session["userName"] = datos2.GetString(2) + " " + datos2.GetString(3);
                            HttpContext.Current.Session["identificador"] = datos2.GetInt32(0);
                            HttpContext.Current.Session["tipoUsuario"] = "supervisor";
                            HttpContext.Current.Session["ultimoLogin"] = datos2.GetDateTime(22);
                            setUltimoLogin(datos2.GetInt32(0), 'E');
                            resultado = "supervisor/PaginaPrincipalSupervisor.aspx";
                        }
                        else
                        {
                            // no deberia ocurrir. error de la base de datos
                            resultado = "error";
                        }
                    }
                    else
                    {
                        resultado = "error";
                    }
                }
            }
            else
            {
                resultado = "error";
            }

            sql.closeConexion();

            return resultado;
        }

        /// <summary>
        /// comprueba si el cliente/empleado actual está logueado
        /// </summary>
        /// <returns>true si el cliente/empleado está logueado</returns>
        public static bool isLogged()
        {
            bool logged = false;
            if (HttpContext.Current.Session["identificador"] != null)
            {
                if ((int)HttpContext.Current.Session["logueado"] == 1)
                {
                    logged = true;
                }
            }
            return logged;
        }

        /// <summary>
        /// actualiza la fecha de último login del cliente
        /// </summary>
        /// <param name="id">el id del cliente (o empleado)</param>
        /// <param name="tipo">el tipo (cliente o empleado)</param>
        public static void setUltimoLogin(int id, char tipo)
        {
            if (tipo == 'C')
            {
                FuncionesCliente fCliente = new FuncionesCliente();
                fCliente.setUltimoLogin(id);
            }
            else if (tipo == 'E')
            {
                FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
                fEmpleado.setUltimoLogin(id);
            }
        }

        /// <summary>
        /// devuelve los datos de un cliente especificado
        /// </summary>
        /// <param name="idCliente">el id del cliente</param>
        /// <returns>los datos del cliente</returns>
        public static Cliente consultarDatosCliente(int idCliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();

            return fCliente.consultarDatosCliente(idCliente);
        }

        /// <summary>
        /// devuelve los datos de un empleado específico
        /// </summary>
        /// <param name="idEmpleado"> el id del empleado</param>
        /// <param name="c">el tipo de empleado</param>
        /// <returns>los dato del empleado</returns>
        public static Empleado consultarDatosEmpleado(int idEmpleado, char c)
        {
            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
            return fEmpleado.consultarDatosEmpleado(idEmpleado, c);
        }

        /// <summary>
        /// devuelve un listado de los emails de los formularios de altas de clientes rellenados
        /// </summary>
        /// <returns>un listado de correos electrónicos</returns>
        public static string[] obtenerEmailsFormulario()
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.obtenerEmailsFormulario();
        }

        /// <summary>
        /// un listado de de ids de supervisores o de operarios
        /// </summary>
        /// <param name="tipoEmpleado">el tipo de empleado</param>
        /// <returns>el array de ids</returns>
        public static int[] obtenerListadoId(char tipoEmpleado)
        {

            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
            return fEmpleado.obtenerListadoId(tipoEmpleado);

        }

        /// <summary>
        /// procesa la baja de un empleado
        /// </summary>
        /// <param name="idEmpleado">el id del empleado a dar de baja</param>
        /// <returns>true si fué dado de baja correctamente</returns>
        public static bool bajaEmpleado(int idEmpleado)
        {
            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
            return fEmpleado.bajaEmpleado(idEmpleado);
        }


        /// <summary>
        /// devuelve los datos introducidos por un posible cliente en el formulario de alta
        /// </summary>
        /// <param name="email">el correo electrónico del posible cliente</param>
        /// <returns>los datos introducidos en el formulario de alta</returns>
        public static Cliente obtenerDatosClienteEmail(string email)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.obtenerDatosClienteEmail(email);
        }

        /// <summary>
        /// consulta el saldo de un cliente
        /// </summary>
        /// <param name="idCliente">el id del cliente</param>
        /// <returns>su saldo actual</returns>
        public static double consultarSaldo(int idCliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.consultarSaldo(idCliente);
        }

        /// <summary>
        /// devuelve el valor de las acciones que posee el cliente
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>el valor de sus acciones</returns>
        public static double consultarValorAccionesCliente(int idcliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.consultarValorAccionesCartera(idcliente);
        }

        /// <summary>
        /// devuelve el valor de compra de las acciones que posee el cliente.
        /// sirve para calcular si se han obtenido beneficios o pérdidas desde
        /// que el cliente las compró
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>el coste base</returns>
        public static double consultarValorBaseAccionesCliente(int idcliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.consultarValorBaseAccionesCartera(idcliente);
        }

        /// <summary>
        /// procesa el cambio de password de un cliente
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <param name="oldPassword">la password antigua</param>
        /// <param name="newPassword">la nueva password</param>
        /// <returns>true si se cambió correctamente</returns>
        public static bool cambiarPassword(int idcliente, string oldPassword, string newPassword)
        {
            bool resultado = false;

            FuncionesCliente fCliente = new FuncionesCliente();

            resultado = fCliente.comprobarPassword(oldPassword, idcliente);

            if (resultado)
            {
                resultado = fCliente.cambiarPassword(newPassword, idcliente);
            }

            return resultado;
        }

        /// <summary>
        /// procesa el cambio de password de un empleado
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <param name="oldPassword">la password antigua</param>
        /// <param name="newPassword">la nueva password</param>
        /// <returns>true si se cambió correctamente</returns>
        public static bool cambiarPasswordEmpleado(int idempleado, string oldPassword, string newPassword)
        {
            bool resultado = false;

            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();

            resultado = fEmpleado.comprobarPasswordEmpleado(oldPassword, idempleado);

            if (resultado)
            {
                resultado = fEmpleado.cambiarPasswordEmpleado(newPassword, idempleado);
            }

            return resultado;
        }

        /// <summary>
        /// comprueba si la password dada por el usuario es correcta
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <param name="password">la password del cliente</param>
        /// <returns>true si se valida</returns>
        public static bool comprobarPassword(int idcliente, string password)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.comprobarPassword(password, idcliente);
        }

        /// <summary>
        /// procesa la realización de un ingreso en la cuenta asociada al cliente
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <param name="cantidad">la cantidad a ingresar</param>
        /// <returns>true si se realizó la operación correctamente</returns>
        public static bool realizarIngreso(int idcliente, double cantidad)
        {
            AccesoBanco accesoB = new AccesoBanco();
            return accesoB.ingresarDinero(idcliente, cantidad);
        }

        /// <summary>
        /// procesa un ingreso en la cuenta personal del cliente
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <param name="cantidad">la cantidad a ingresar</param>
        /// <returns></returns>
        public static bool realizarRetirada(int idcliente, double cantidad)
        {
            AccesoBanco accesoB = new AccesoBanco();
            return accesoB.retirarDinero(idcliente, cantidad);
        }

        /// <summary>
        /// devuelve la cuenta del cliente especificado
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>la cuenta del cliente</returns>
        public static string getCuentaCliente(int idcliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.devolverCuentaCliente(idcliente);
        }

        /// <summary>
        /// tramita una nueva solicitud de alta de un cliente potencial
        /// </summary>
        /// <param name="email">el correo electronico del cliente</param>
        /// <returns>true si se tramitó correctamente</returns>
        public static bool solicitudAlta(string email)
        {
            Solicitudes sol = new Solicitudes(-1, email, "");
            return sol.solicitudDeAlta();
        }

        /// <summary>
        /// tramita la baja de un cliente
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <param name="razon">la razón de la baja</param>
        /// <param name="password">la password para verificar su identidad</param>
        /// <returns>true si todo fué bien</returns>
        public static bool solicitarBaja(int idcliente, string razon, string password)
        {
            bool resultado = false;

            string passwordCifrada = RijndaelSimple.Encrypt(password,
                                                         "Pas5pr@se","s@1tValue","SHA1",
                                                         2,"@1B2c3D4e5F6g7H8",256);

            FuncionesCliente fCliente = new FuncionesCliente();

            resultado = fCliente.comprobarPassword(passwordCifrada, idcliente);

            if (resultado)
            {
                Solicitudes sol = new Solicitudes(idcliente, " ", razon);

                resultado = sol.solicitudDeBaja();
            }

            return resultado;
        }

        /// <summary>
        /// procesa la actualización de los datos del cliente
        /// </summary>
        /// <param name="c">los datos actualizados</param>
        /// <returns>true si se modificaron correctamente</returns>
        public static bool modificarCliente(Cliente c)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.modificarCliente(c);
        }

        /// <summary>
        /// procesa la actualización de los datos de un empleado
        /// </summary>
        /// <param name="e">los datos actualizados</param>
        /// <returns>true si se actualizaron correctamente</returns>
        public static bool modificarEmpleado(Empleado e)
        {
            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
            return fEmpleado.modificarEmpleado(e);
        }

        /// <summary>
        /// procesa el alta de un nuevo empleado
        /// </summary>
        /// <param name="e">los datos del nuevo empleado</param>
        /// <returns>true si fué dado de alta correctamente</returns>
        public static bool darAltaEmpleado(Empleado e)
        {
            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
            return fEmpleado.darAltaEmpleado(e);
        }

        /// <summary>
        /// da de alta un cliente
        /// </summary>
        /// <param name="c">los datos del cliente</param>
        /// <returns>true si fué dado de alta correctamente</returns>
        public static bool darAltaCliente(Cliente c)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.darAltaCliente(c);
        }

        /// <summary>
        /// devuelve un listado de todas las bajas solicitadas por losclientes
        /// </summary>
        /// <returns>listado de solicitudes de bajas</returns>
        public static Solicitudes[] getBajasSolicitadas()
        {
            Solicitudes sol = new Solicitudes();
            return sol.mostrarListadoBajas();
        }

        /// <summary>
        /// devuelve el nomvre del cliente especificado
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>el nombre del cliente</returns>
        public static string getNombreCliente(int idcliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.getNombre(idcliente);
        }

        /// <summary>
        /// devuelve el nombre del empleado a partir del id de empleado
        /// </summary>
        /// <param name="idEmpleado">el id del empleado</param>
        /// <returns>el nombre del empleado</returns>
        public static string getNombreEmpleado(int idEmpleado)
        {
            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
            return fEmpleado.getNombreEmpleado(idEmpleado);
        }

        /// <summary>
        /// da de baja a un cliente
        /// </summary>
        /// <param name="idcliente">el id del cliente a dar de baja</param>
        /// <returns>true si fué dado de baja correctamente</returns>
        public static bool bajaCliente(int idcliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.bajaCliente(idcliente);
        }

        /// <summary>
        /// elimina una solicitud de baja de la base de datos
        /// </summary>
        /// <param name="idcliente">el id del cliente dado de baja</param>
        /// <returns>true si se eliminó correctamente</returns>
        public static bool eliminarSolicitudBaja(int idcliente)
        {
            Solicitudes sol = new Solicitudes();
            return sol.eliminarSolicitudBaja(idcliente);
        }

        /// <summary>
        /// devuelve la cartera de acciones del cliente
        /// </summary>
        /// <param name="idCliente">el id único del cliente</param>
        /// <returns>la cartera de acciones</returns>
        public static CarteraCliente[] getCarteraCliente(int idCliente)
        {
            FuncionesBolsa fBolsa = new FuncionesBolsaVP();
            return fBolsa.consultarCartera(idCliente);
        }

        /// <summary>
        /// devuelve el valor actual de una acción
        /// </summary>
        /// <param name="acronimo">el acrónimo de la empresa</param>
        /// <returns>el valor de una acción de la empresa especificada</returns>
        public static double getValorActual(string acronimo)
        {
            AccesoNASDAQ access = new AccesoNASDAQ();
            return access.valorDeAccion(acronimo);
        }

        /// <summary>
        /// devuelve el nombre de la empresa a partir de su acrónimo
        /// </summary>
        /// <param name="acronimo">el acrónimo de la empresa</param>
        /// <returns>el nombre de la empresa</returns>
        public static string getNombreEmpresa(string acronimo)
        {
            AccesoNASDAQ access = new AccesoNASDAQ();
            return access.getNombreEmpresa(acronimo);
        }

        /// <summary>
        /// devuelve un listado de las cotizaciones en bolsa actuales
        /// </summary>
        /// <returns>un listado de las cotizaciones actuales</returns>
        public static Cotizaciones[] getCotizaciones()
        {
            AccesoNASDAQ nasdaq = new AccesoNASDAQ();
            return nasdaq.consultarValores();
        }

        /// <summary>
        /// procesa la compra de acciones por parte del cliente
        /// </summary>
        /// <param name="idCliente">el id del cliente</param>
        /// <param name="empresaCotizante">el acronimo de la empresa</param>
        /// <param name="numAcciones">el número de acciones a comprar</param>
        /// <param name="valor">el valor predefinido de compra por acción</param>
        /// <returns></returns>
        public static string comprarAcciones(int idCliente, string empresaCotizante, int numAcciones, double valor)
        {
            FuncionesBolsa fBolsa = null;

            if (valor == 0.0)
            {
                fBolsa = new FuncionesBolsaPLM();
            }
            else
            {
                fBolsa = new FuncionesBolsaVP();
            }

            return fBolsa.comprarAcciones(idCliente, empresaCotizante, numAcciones, valor);
        }

        /// <summary>
        /// proceso para la venta de acciones del cliente
        /// </summary>
        /// <param name="idCliente">el id del cliente</param>
        /// <param name="empresaCotizante">el acronimo de la empresa</param>
        /// <param name="numAcciones">el número de acciones a comprar</param>
        /// <param name="valor">el valor predefinido de compra por acción</param>
        /// <returns></returns>
        public static string VenderAcciones(int idcliente, string codeOrden, string empresaCotizante, int numAcciones, double valor)
        {
            FuncionesBolsa fBolsa = null;

            if (valor == 0.0)
            {
                fBolsa = new FuncionesBolsaPLM();
            }
            else
            {
                fBolsa = new FuncionesBolsaVP();
            }
            return fBolsa.venderAcciones(idcliente, codeOrden, empresaCotizante, numAcciones, valor);
        }

        /// <summary>
        /// devuelve el número de acciones que posee el cliente de una determinada empresa
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <param name="empresaCotizante">la empresa cotizante</param>
        /// <returns>el número de acciones</returns>
        public static int getAccionesDisponibles(int idcliente, string empresaCotizante)
        {
            FuncionesBolsa fBolsa = new FuncionesBolsaVP();
            return fBolsa.getAccionesDisponibles(idcliente, empresaCotizante);
        }

        /// <summary>
        /// cancelación de una orden previamente enviada
        /// </summary>
        /// <param name="codigoDeOrden">el código de la orden</param>
        /// <returns>true si se canceló, false si no es posible</returns>
        public static bool cancelarOrden(string codigoDeOrden)
        {
            FuncionesBolsa fBolsa = new FuncionesBolsaPLM();
            return fBolsa.cancelarOrden(codigoDeOrden);
        }

        /// <summary>
        /// comprueba si el cliente ha solicitado ya la baja
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>true si la baja ha sido solicitada con anterioridad</returns>
        public static bool comprobarSolicitudBaja(int idcliente)
        {
            Solicitudes sol = new Solicitudes();
            return sol.comprobarSolicitudBaja(idcliente);
        }

        /// <summary>
        /// comprueba si existe una solicitud de alta con ese código
        /// </summary>
        /// <param name="codigo">el código a comprobar</param>
        /// <returns>true si ya existe la solicitud</returns>
        public static bool comprobarSolicitudAlta(string codigo)
        {
            Solicitudes sol = new Solicitudes();
            return sol.comprobarSolicitudAlta(codigo);
        }

        /// <summary>
        /// procesa una nueva solicitud de alta
        /// </summary>
        /// <param name="c">la solicitud de un nuevo cliente</param>
        /// <returns>true si se procesa correctamente</returns>
        public static bool altaClienteFormulario(Cliente c)
        {
            Solicitudes sol = new Solicitudes();
            return sol.altaClienteFormulario(c);
        }

        /// <summary>
        /// comprueba si el id del cliente está en la base de datos
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>true si existe</returns>
        public static bool checkIdCliente(int idcliente)
        {
            FuncionesCliente fCliente = new FuncionesCliente();
            return fCliente.checkIdCliente(idcliente);
        }

        /// <summary>
        /// comprueba si la orden especificada está aún en espera
        /// </summary>
        /// <param name="codigodeorden">el código de la orden</param>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>true si aún está en espera</returns>
        public static bool checkOrdenCliente(string codigodeorden, int idcliente)
        {
            bool resultado = false;

            Acciones[] acciones = listadoDeOrdenesPendientes(idcliente);

            for (int i = 0; i < acciones.Length; i++)
            {
                if (acciones[i].getCodigoDeOrden() == codigodeorden)
                {
                    resultado = true;
                    break;
                }
            }
            return resultado;
        }

        /// <summary>
        /// devuelve un listado de las ordenes aún no realizadas
        /// </summary>
        /// <param name="idcliente">el id del cliente</param>
        /// <returns>listado de operaciones no realizadas</returns>
        public static Acciones[] listadoDeOrdenesPendientes(int idcliente)
        {
            FuncionesBolsa fBolsa = new FuncionesBolsaPLM();
            return fBolsa.getOrdenesPendientes(idcliente);
        }

        /// <summary>
        /// devuelve un listado con las operaciones de compras realizadas 
        /// por los clientes en una determinada fecha
        /// </summary>
        /// <param name="fecha">la fecha de compra</param>
        /// <returns>un listado de operaciones realizadas</returns>
        public static CarteraCliente[] obternerInformeAccionesCompradas(string fecha)
        {
            Informes infAC = new Informes();
            return infAC.obtenerInformeAccionesCompradas(fecha);
        }

        /// <summary>
        /// obtiene un listado e los clientes con saldo negativo
        /// </summary>
        /// <returns>el lisrado de clientes</returns>
        public static Cliente[] obtenerClientesSaldoNegativo()
        {
            Informes infSN = new Informes();
            return infSN.obtenerInformeClientesSaldoNegativo();
        }

        /// <summary>
        /// devuelve una serie de estadísticas para ser mostradas 
        /// en la ventana de bienvenida del supervisor
        /// </summary>
        /// <returns>un array con los valores de las estadísticas</returns>
        public static int[] getStatistics()
        {
            FuncionesEmpleado fEmpleado = new FuncionesEmpleado();
            return fEmpleado.getStatistics();
        }

        /// <summary>
        /// genera un informe mostrando las ganancias/perdidas de las acciones de los clientes 
        /// se obtiene una cartera de acciones con las acciones compradas en el periodo especificado 
        /// por la fechaInicio y fechaFin
        /// </summary>
        /// <param name="fechaF">la fecha hasta la que ha de buscar</param>
        /// <param name="fechaI">la fecha desde la que ha de buscar</param>
        /// <returns>una cartera de acciones</returns>
        public static CarteraCliente[] obtenerInformeGanaciasPerdidas(string fechaF, string fechaI)
        {
            Informes infGP = new Informes();
            return infGP.obtenerInformePerdidasGanancias(fechaF, fechaI);
        }

        /// <summary>
        /// genera un informe con los históricos de operaciones en bolsa entre las fechas específicadas
        /// </summary>
        /// <param name="fechaFin">la fecha hasta la que ha de buscar</param>
        /// <param name="fechaInicio">la fecha desde la que ha de buscar</param>
        /// <returns>un array de operaciones realizadas</returns>
        public static Acciones[] obtenerInformeHistoricoBolsa(string fechaFin, string fechaInicio)
        {
            Informes infHB = new Informes();
            return infHB.obtenerInformeHistoricoBolsa(fechaFin, fechaInicio);
        }

        /// <summary>
        /// genera un informe con las acciones vendidas durante el día especificado
        /// </summary>
        /// <param name="fecha">el día especificado</param>
        /// <returns>una cartera de acciones</returns>
        public static Acciones[] obtenerInformeAccionesVendidas(string fecha)
        {
            Informes infAV = new Informes();
            return infAV.obtenerInformeAccionesVendidas(fecha);
        }

    }
}